var Back = new Ext.extend(Ext.Panel, {
	border : false,
	layout : 'fit',
	initComponent : function() {
		this.initGrid();
		this.items = [this.grid];
		Back.superclass.initComponent.call(this);
	},
	addOrUpdate : function(isAdd) {
		var me = this;
		if (this.win) {
			this.win.close();
		}
		var rec = this.grid.getRecord();
		if (!isAdd) {
			if (!rec) {
				TopMy.alert('请选择要修改的记录！');
				return;
			}
		}
		this.form = new TopExt.FormPanel({
			border : false,
			autoScroll : true,
			padding : 5,
			defaults : {
				xtype : 'textfield',
				anchor : '100%'
			},
			labelWidth : 70,
			labelAlign : 'right',
			items : [{
						xtype : 'hidden',
						name : 'back_id'
					}, {
						xtype : 'combo',
						name : 'material_id',
						hiddenName : 'material_id',
						fieldLabel : '材料名称',
						displayField : 'material_name',
						valueField : 'material_id',
						triggerAction : 'all',
						mode : 'local',
						editable : false,
						store : new Ext.data.JsonStore({
							fields : ['material_id', 'material_name', 'residue'],
							url : My.url('/jxc/material/getMaterialList.do'),
							root : 'data',
							autoLoad : true
						}),
						allowBlank : false,
						listeners : {
							select : function(t, r) {
								// residue = r.data.residue;
							}
						}
					}, {
						xtype : 'combo',
						name : 'builder_id',
						hiddenName : 'builder_id',
						fieldLabel : '施工队',
						displayField : 'builder_name',
						valueField : 'builder_id',
						triggerAction : 'all',
						mode : 'local',
						editable : false,
						store : new Ext.data.JsonStore({
									fields : ['builder_id', 'builder_name'],
									url : My
											.url('/jxc/builder/getBuilderList.do'),
									root : 'data',
									autoLoad : true
								}),
						allowBlank : false
					}, {
						xtype : 'numberfield',
						name : 'price',
						fieldLabel : '退库单价',
						allowBlank : false,
						listeners : {
							blur : function(t) {
								var p = me.form.getForm().findField('amount')
										.getValue()
										|| 0;
								var v = t.getValue() || 0;
								var tp = me.form.getForm()
										.findField('total_price');
								tp.setValue(p * v);
							}
						}
					}, {
						xtype : 'numberfield',
						name : 'amount',
						fieldLabel : '退库数量',
						allowBlank : false,
						minValue : 1,
						value : 1,
						listeners : {
							blur : function(t) {
								var p = me.form.getForm().findField('price')
										.getValue()
										|| 0;
								var v = t.getValue() || 0;
								var tp = me.form.getForm()
										.findField('total_price');
								tp.setValue(p * v);
							}
						}
					}, {
						xtype : 'numberfield',
						name : 'total_price',
						fieldLabel : '退库总价',
						readOnly : true,
						allowBlank : false
					}, {
						xtype : 'combo',
						name : 'back_user',
						fieldLabel : '经办人',
						displayField : 'name',
						valueField : 'name',
						triggerAction : 'all',
						mode : 'local',
						editable : false,
						store : new Ext.data.JsonStore({
									fields : ['back_id', 'name'],
									url : My
											.url('/system/permis/user/getUserList.do'),
									root : 'data',
									autoLoad : true
								}),
						allowBlank : false,
						value : USER.name
					}, {
						xtype : 'datetimefield',
						name : 'back_time',
						fieldLabel : '退库时间',
						allowBlank : false
					}, {
						xtype : 'textarea',
						name : 'remark',
						fieldLabel : '备注'
					}],
			listeners : {
				afterrender : function(t) {
					if (!isAdd) {
						setTimeout(function() {
									t.getForm().loadRecord(rec);
								}, 200);
					}
				}
			}
		});
		this.win = new TopExt.Window({
					title : isAdd ? '新增退库信息' : '更新退库信息',
					width : 380,
					autoHeight : true,
					modal : true,
					items : [this.form],
					buttons : [{
								text : '保存',
								iconCls : 'icon-save',
								handler : function() {
									var url = My.url('/jxc/back/add.do');
									if (!isAdd) {
										url = My.url('/jxc/back/update.do');
									}
									TopMy.submit(me.form, {
												url : url,
												successCallback : function() {
													me.win.close();
													me.grid.getStore().reload();
												}
											});
								}
							}, {
								text : '取消',
								iconCls : 'icon-cancel',
								handler : function() {
									me.win.close();
								}
							}]
				});
		this.win.show();
		return this.form;
	},
	initGrid : function() {
		var me = this;
		var store = new Ext.data.JsonStore({
					fields : ['back_id', 'material_id', 'builder_id', 'price',
							'amount', 'total_price', 'deleted', 'remark',
							'back_time', 'back_user', 'material_name', 'unit',
							'total_amount', 'residue', 'builder_name',
							'linkman', 'telphone', 'address', 'fax', 'postcode'],
					url : My.url('/jxc/back/getBackList.do'),
					root : 'data',
					autoLoad : true
				});
		this.grid = new Ext.grid.EditorGridPanel({
			region : 'center',
			boxMinWidth : 480,
			loadMask : true,
			getRecord : function() {
				return me.grid.getSelectionModel().getSelected();
			},
			store : store,
			viewConfig : {
				forceFit : true
			},
			sm : new Ext.grid.RowSelectionModel({
						listeners : {
							rowselect : function(t, i, r) {
							}
						}
					}),
			cm : new Ext.grid.ColumnModel({
						defaults : {
							align : 'center'
						},
						columns : [{
									dataIndex : 'material_name',
									header : '材料名称',
									width : 150
								}, {
									dataIndex : 'price',
									header : '退库单价',
									renderer : function(v, m, r) {
										v = Ext.util.Format.number(v, '0,0.00');
										m.attr = "style='text-align:right;'";
										return v;
									}
								}, {
									dataIndex : 'amount',
									header : '退库数量',
									renderer : function(v, m, r) {
										m.attr = "style='text-align:right;'";
										return v;
									}
								}, {
									dataIndex : 'total_price',
									header : '退库总价',
									renderer : function(v, m, r) {
										v = Ext.util.Format.number(v, '0,0.00');
										m.attr = "style='text-align:right;'";
										return v;
									}
								}, {
									dataIndex : 'back_time',
									header : '退库时间'
								}, {
									dataIndex : 'back_user',
									header : '经办人'
								}, {
									dataIndex : 'builder_name',
									header : '施工队'
								}, {
									dataIndex : 'residue',
									header : '剩余数量',
									renderer : function(v, m, r) {
										m.attr = "style='text-align:right;'";
										return v;
									}
								}, {
									dataIndex : 'remark',
									header : '备注'
								}]
					}),
			bodyStyle : 'border-left:0;border-bottom:0;',
			tbar : new Ext.Toolbar({
						style : 'border-left:0;border-top:0;',
						items : [{
									text : '新增',
									iconCls : 'icon-add',
									handler : function() {
										me.addOrUpdate(true);
									}
								}, {
									text : '修改',
									iconCls : 'icon-update',
									handler : function() {
										me.addOrUpdate();
									}
								}, {
									text : '删除',
									iconCls : 'icon-delete',
									handler : function() {
										me.dele();
									}
								}, '-', {
									xtype : 'searchfield',
									name : 'material_name',
									store : store
								}]
					}),
			listeners : {
				rowclick : function(g, i, e) {
				}
			}
		});
	},
	setDisabled : function(disabled, sbbar) {
		var me = this;
		var rec = me.grid.getRecord();
		if (!rec) {
			My.alert('请选择要禁用的退库信息！');
			return;
		}
		My.confirm('确定要禁用该退库吗？', function(btn) {
					if (btn == 'no') {
						return;
					}
					My.request({
								url : My.url('/jxc/back/setDisabled.do'),
								params : {
									back_id : rec.data.back_id,
									deleted : '1'
								},
								successCallback : function() {
									me.grid.getStore().reload();
								}
							});
				});
	},
	dele : function() {
		var me = this;
		var rec = me.grid.getRecord();
		if (!rec) {
			My.alert('请选择要删除的退库信息 ！');
			return;
		}
		My.confirm('确定要删除该退库信息吗？', function(btn) {
					if (btn == 'no') {
						return;
					}
					My.request({
								url : My.url('/jxc/back/delete.do'),
								params : {
									back_id : rec.data.back_id
								},
								successCallback : function() {
									me.grid.getStore().reload();
								}
							});
				});
	}
});

Ext.onReady(function() {
			new Ext.Viewport({
						layout : 'fit',
						items : [new Back()]
					});
		});